/* Pi-hole: A black hole for Internet advertisements
*  (c) 2017 Pi-hole, LLC (https://pi-hole.net)
*  Network-wide ad blocking via your own hardware.
*
*  This file is copyright under the latest version of the EUPL.
*  Please see LICENSE file for your rights under this license. */
var exact = "";

function quietfilter(ta,data)
{
    var lines = data.split("\n");
    for(var i = 0;i<lines.length;i++)
    {
        if(lines[i].indexOf("results") !== -1 && lines[i].indexOf("0 results") === -1)
        {
            var shortstring = lines[i].replace("::: /etc/pihole/","");
            // Remove "(x results)"
            shortstring = shortstring.replace(/\(.*/,"");
            ta.append(shortstring+"\n");
        }
    }
}

// Credit: http://stackoverflow.com/a/10642418/2087442
function httpGet(ta,quiet,theUrl)
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
    // code for IE7+
        xmlhttp = new XMLHttpRequest();
    }
    else
    {
    // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200)
        {
            ta.show();
            ta.empty();
            if(!quiet)
            {
                ta.append(xmlhttp.responseText);
            }
            else
            {
                quietfilter(ta,xmlhttp.responseText);
            }
        }
    };
    xmlhttp.open("GET", theUrl, false);
    xmlhttp.send();
}

function eventsource() {
    var ta = $("#output");
    var domain = $("#domain").val().trim();
    var q = $("#quiet");

    if(domain.length === 0)
    {
        return;
    }

    var quiet = false;
    if(q.val() === "yes")
    {
        quiet = true;
        exact = "exact";
    }

    // IE does not support EventSource - load whole content at once
    if (typeof EventSource !== "function") {
        httpGet(ta,quiet,"/admin/scripts/pi-hole/php/queryads.php?domain="+domain.toLowerCase()+exact+"&IE");
        return;
    }

    var host = window.location.host;
    var source = new EventSource("/admin/scripts/pi-hole/php/queryads.php?domain="+domain.toLowerCase()+"&"+exact);

    // Reset and show field
    ta.empty();
    ta.show();

    source.addEventListener("message", function(e) {
        if(!quiet)
        {
            ta.append(e.data);
        }
        else
        {
            quietfilter(ta,e.data);
        }
    }, false);

    // Will be called when script has finished
    source.addEventListener("error", function(e) {
        source.close();
    }, false);

    // Reset exact variable
    exact = "";
}

// Handle enter button
$(document).keypress(function(e) {
    if(e.which === 13 && $("#domain").is(":focus")) {
        // Enter was pressed, and the input has focus
        exact = "";
        eventsource();
    }
});
// Handle button
$("#btnSearch").on("click", function() {
    exact = "";
    eventsource();
});
// Handle exact button
$("#btnSearchExact").on("click", function() {
    exact = "exact";
    eventsource();
});

// Wrap form-group's buttons to next line when viewed on a small screen
$(window).on("resize",function() {
    if ($(window).width() < 991) {
        $(".form-group.input-group").removeClass("input-group").addClass("input-group-block");
        $(".form-group.input-group-block > input").css("margin-bottom", "5px");
        $(".form-group.input-group-block > .input-group-btn").removeClass("input-group-btn").addClass("btn-block text-center");
    }
    else {
        $(".form-group.input-group-block").removeClass("input-group-block").addClass( "input-group" );
        $(".form-group.input-group > input").css("margin-bottom","");
        $(".form-group.input-group > .btn-block.text-center").removeClass("btn-block text-center").addClass("input-group-btn");
    }
});
$(document).ready(function() {
    $(window).trigger("resize");
});
